/* 
 * Ingenieria del Software
 * Ejemplo de uso e implementacion de Patrones
 * 
 * Creado el 20/05/2008 
 */
package util;

import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Class ConfigurationUtil
 * 
 * Clase que implementa el patron Singleton para
 * el acceso al archivo de propiedades del sistema.
 * 
 * 
 */
public class ConfigurationUtil {

    /**
     * Unica instancia para esta clase
     */
    private static ConfigurationUtil instance = new ConfigurationUtil();

    /**
     * Instancia para almacenar las propiedades del sistema
     */
    private Properties props = new Properties();
    
    /**
     * Crea una instancia de tipo ConfigurationUtil. Este constructor
     * se encarga de la lectura de las propiedades definidas en el
     * archivo "configuration.properties".
     */
    private ConfigurationUtil() {
        try {
            
            props.load(getClass().getResourceAsStream("/configuracion.properties"));
            
        } catch (IOException ex) {
            
            Logger.getLogger(ConfigurationUtil.class.getName())
                    .log(Level.SEVERE,
                    "Error al inicializar la clase Configurator Util", ex);
        }
    }

    /**
     * Obtiene la unica instancia de la clase ConfigurationUtil
     * 
     * @return instancia de tipo ConfigurationUtil
     */
    public static ConfigurationUtil getInstance() {
        return instance;
    }
    
    /**
     * Obtiene el valor de una propiedad a partir de su nombre
     * 
     * @param propName nombre de la propiedad de la cual se 
     *        desea conocer su valor.
     * 
     * @return valor de la propiedad solicitada.
     */
    public String getProperty(String propName) {
        return props.getProperty(propName);
    }
}
